package com.example.aiquestions.model.dto;

import com.example.aiquestions.model.dto.QuestionResponse.QuestionData.KeyPoint;
import com.example.aiquestions.model.dto.QuestionResponse.QuestionData.Option;
import com.example.aiquestions.model.dto.QuestionResponse.QuestionData.SubQuestion;
import lombok.Data;

import java.util.List;

@Data
public class QuestionDetail {
    private Long id;
    private String questionType;  // SINGLE_CHOICE, MULTIPLE_CHOICE, SHORT_ANSWER, TRUE_FALSE, FILL_BLANK, READING, SUB_QUESTION
    private String stem;
    private List<Option> options;
    private String answer;        // 单选题、判断题答案
    private List<String> answers; // 多选题答案
    private String blanks;        // 填空题答案，多个答案用|分隔
    private String passage;       // 阅读理解文章内容
    private List<SubQuestion> subQuestions; // 阅读理解子题目
    private String analysis;
    private Integer difficulty;
    private List<String> tags;
    private List<String> knowledgePoints;
    private List<KeyPoint> keyPoints;  // 简答题答案要点
    private Integer score;        // 填空题每空分值
    private Integer totalScore;   // 简答题、填空题、阅读理解总分

    public QuestionDetail() {
    }

    public QuestionDetail(Long id, String questionType, String stem, List<Option> options, String answer, List<String> answers, String blanks, String passage, List<SubQuestion> subQuestions, String analysis, Integer difficulty, List<String> tags, List<String> knowledgePoints, List<KeyPoint> keyPoints, Integer score, Integer totalScore) {
        this.id = id;
        this.questionType = questionType;
        this.stem = stem;
        this.options = options;
        this.answer = answer;
        this.answers = answers;
        this.blanks = blanks;
        this.passage = passage;
        this.subQuestions = subQuestions;
        this.analysis = analysis;
        this.difficulty = difficulty;
        this.tags = tags;
        this.knowledgePoints = knowledgePoints;
        this.keyPoints = keyPoints;
        this.score = score;
        this.totalScore = totalScore;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getQuestionType() {
        return questionType;
    }

    public void setQuestionType(String questionType) {
        this.questionType = questionType;
    }

    public String getStem() {
        return stem;
    }

    public void setStem(String stem) {
        this.stem = stem;
    }

    public List<Option> getOptions() {
        return options;
    }

    public void setOptions(List<Option> options) {
        this.options = options;
    }

    public String getAnswer() {
        return answer;
    }

    public void setAnswer(String answer) {
        this.answer = answer;
    }

    public List<String> getAnswers() {
        return answers;
    }

    public void setAnswers(List<String> answers) {
        this.answers = answers;
    }

    public String getBlanks() {
        return blanks;
    }

    public void setBlanks(String blanks) {
        this.blanks = blanks;
    }

    public String getPassage() {
        return passage;
    }

    public void setPassage(String passage) {
        this.passage = passage;
    }

    public List<SubQuestion> getSubQuestions() {
        return subQuestions;
    }

    public void setSubQuestions(List<SubQuestion> subQuestions) {
        this.subQuestions = subQuestions;
    }

    public String getAnalysis() {
        return analysis;
    }

    public void setAnalysis(String analysis) {
        this.analysis = analysis;
    }

    public Integer getDifficulty() {
        return difficulty;
    }

    public void setDifficulty(Integer difficulty) {
        this.difficulty = difficulty;
    }

    public List<String> getTags() {
        return tags;
    }

    public void setTags(List<String> tags) {
        this.tags = tags;
    }

    public List<String> getKnowledgePoints() {
        return knowledgePoints;
    }

    public void setKnowledgePoints(List<String> knowledgePoints) {
        this.knowledgePoints = knowledgePoints;
    }

    public List<KeyPoint> getKeyPoints() {
        return keyPoints;
    }

    public void setKeyPoints(List<KeyPoint> keyPoints) {
        this.keyPoints = keyPoints;
    }

    public Integer getScore() {
        return score;
    }

    public void setScore(Integer score) {
        this.score = score;
    }

    public Integer getTotalScore() {
        return totalScore;
    }

    public void setTotalScore(Integer totalScore) {
        this.totalScore = totalScore;
    }
}